home *** CD-ROM | disk | FTP | other *** search
/ Codemasters Artwork Disc ECTS 2000 ( UK) / Codemasters - Artwork Disc ECTS 2000 (UK).bin / pc / xtras / medial~1 / setfx~1.dir / Internal_91_Pointer Object.ls < prev    next >
Encoding:
Text File  |  1998-12-01  |  2.9 KB  |  116 lines

  1. property pPointerSprite, pTextSprite, pTextField, pCurVal, pCallBackObj, pRefcon, pRange, pMin, pMax, pSliderLeft, pSliderWidth, pActive
  2.  
  3. on new me, propList
  4.   set pPointerSprite to getaProp(propList, #thumbSprite)
  5.   set pTextSprite to getaProp(propList, #textSprite)
  6.   set pTextField to getaProp(propList, #textField)
  7.   set pMin to getaProp(propList, #min)
  8.   set pMax to getaProp(propList, #max)
  9.   set pCurVal to getaProp(propList, #cur)
  10.   set pRange to pMax - pMin
  11.   set pActive to getaProp(propList, #active)
  12.   set pSliderLeft to getaProp(propList, #left)
  13.   set pSliderWidth to getaProp(propList, #width)
  14.   set pActive to getaProp(propList, #active)
  15.   set pCallBackObj to getaProp(propList, #callback)
  16.   set pRefcon to getaProp(propList, #ref)
  17.   SetVal(me, pCurVal)
  18.   SetEnabled(me, pActive)
  19.   return me
  20. end
  21.  
  22. on Drag me
  23.   if not pActive then
  24.     exit
  25.   end if
  26.   repeat while the stillDown
  27.     set H to min(max(the mouseH, pSliderLeft), pSliderLeft + pSliderWidth)
  28.     set the locH of sprite pPointerSprite to H
  29.     updateStage()
  30.     set loc to the locH of sprite pPointerSprite - pSliderLeft
  31.     set newVal to (pRange * loc / pSliderWidth) + pMin
  32.     SetVal(me, newVal)
  33.     if objectp(pCallBackObj) then
  34.       DoDrag(pCallBackObj, pRefcon, newVal)
  35.     end if
  36.   end repeat
  37.   if objectp(pCallBackObj) then
  38.     EndChange(pCallBackObj)
  39.   end if
  40. end
  41.  
  42. on CalcVal me, numerator, denom, otherDenom
  43.   set val to otherDenom * numerator / denom
  44.   return val
  45. end
  46.  
  47. on TextOut me
  48.   if voidp(pCurVal) then
  49.     put " " into field pTextField
  50.   else
  51.     put string(integer(pCurVal)) into field pTextField
  52.   end if
  53. end
  54.  
  55. on keyBoardInputDown me, k
  56.   if not pActive then
  57.     exit
  58.   end if
  59.   if "-0123456789" & BACKSPACE contains k then
  60.     pass()
  61.   else
  62.     dontPassEvent()
  63.   end if
  64. end
  65.  
  66. on keyBoardInputUp me, k
  67.   if not pActive then
  68.     exit
  69.   end if
  70.   set v to field pTextField
  71.   if v = "-" then
  72.     set v to -0
  73.   else
  74.     set v to value(v)
  75.   end if
  76.   if v < pMin then
  77.     put string(pMin) into field pTextField
  78.   else
  79.     if v > pMax then
  80.       put string(pMax) into field pTextField
  81.     end if
  82.   end if
  83.   set pCurVal to value(field pTextField)
  84.   changeNumber(pCallBackObj, pCurVal, pRefcon)
  85.   puppetSprite(pPointerSprite, 1)
  86.   set loc to CalcVal(me, pCurVal - pMin, pRange, pSliderWidth)
  87.   set the locH of sprite pPointerSprite to pSliderLeft + loc
  88.   if objectp(pCallBackObj) then
  89.     DoDrag(pCallBackObj, pRefcon, pCurVal)
  90.   end if
  91.   if objectp(pCallBackObj) then
  92.     EndChange(pCallBackObj, pRefcon, pCurVal)
  93.   end if
  94. end
  95.  
  96. on SetVal me, newVal
  97.   puppetSprite(pPointerSprite, 1)
  98.   set pCurVal to newVal
  99.   if voidp(newVal) then
  100.     set newVal to max(0, pMin)
  101.   end if
  102.   TextOut(me)
  103.   set loc to CalcVal(me, newVal - pMin, pRange, pSliderWidth)
  104.   set the locH of sprite pPointerSprite to pSliderLeft + loc
  105. end
  106.  
  107. on SetEnabled me, enabled
  108.   set pActive to enabled
  109.   enableInterfaceElement(pPointerSprite, enabled)
  110.   enableInterfaceElement(pTextSprite, enabled)
  111. end
  112.  
  113. on Release me
  114.   puppetSprite(pPointerSprite, 0)
  115. end
  116.